Apache ANT কাস্টম টাস্ক তৈরি করার মাধ্যমে আপনি আপনার প্রোজেক্টের জন্য নির্দিষ্ট কাজ সম্পাদন করতে পারেন, যা ANT এর বিল্ট-ইন টাস্কগুলির বাইরে থাকে। কাস্টম টাস্কের মাধ্যমে আপনি Java কোড, সিস্টেম স্ক্রিপ্ট, অথবা অন্য কোন প্রক্রিয়া পরিচালনা করতে পারেন।
ANT এর কাস্টম টাস্ক তৈরি করতে হলে আপনাকে Java ব্যবহার করতে হবে। আপনি একটি Java ক্লাস তৈরি করবেন, যা ANT এর Task
ক্লাস থেকে উদাহরণ (extend) নেবে এবং প্রয়োজনীয় কাজটি সম্পাদন করবে।
প্রথমে আপনাকে একটি Java ক্লাস তৈরি করতে হবে যা ANT এর Task
ক্লাসকে এক্সটেন্ড করবে এবং execute()
মেথডে কাস্টম কোড যুক্ত করবে।
উদাহরণ:
ধরা যাক, আমরা একটি কাস্টম টাস্ক তৈরি করতে চাই যা একটি নির্দিষ্ট ম্যাসেজ প্রিন্ট করবে।
package com.example.anttasks;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class HelloTask extends Task {
// Task এর জন্য প্রোপার্টি
private String message;
public void setMessage(String message) {
this.message = message;
}
@Override
public void execute() throws BuildException {
// কাস্টম কাজ
if (message == null) {
throw new BuildException("Message attribute is required!");
}
System.out.println("Hello, " + message);
}
}
এখানে:
HelloTask
ক্লাসটি Task
ক্লাস এক্সটেন্ড করেছে।setMessage
মেথডের মাধ্যমে আমরা একটি প্রোপার্টি (message) সেট করতে পারি।execute()
মেথডে আমরা সেই মেসেজ প্রিন্ট করব।এখন আপনাকে এই Java ক্লাসটি কম্পাইল করতে হবে। যদি আপনি ANT ব্যবহার করে এটি কম্পাইল করেন, তবে একটি বিল্ড স্ক্রিপ্ট ব্যবহার করতে পারেন।
build.xml (ANT বিল্ড স্ক্রিপ্ট):
<project name="CustomTaskExample" default="compile">
<!-- Define property for the source directory -->
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<!-- Clean old build -->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<!-- Compile the Java code -->
<target name="compile" depends="clean">
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.dir}" destdir="${build.dir}"/>
</target>
</project>
এখন, ANT ব্যবহার করে HelloTask.java
ক্লাসটি কম্পাইল করতে পারবেন।
ant compile
এখন যে Java ক্লাসটি তৈরি করেছেন, তা ANT স্ক্রিপ্টে ব্যবহার করতে হবে। কাস্টম টাস্কের জন্য প্রথমে তার জন্য একটি <taskdef>
ট্যাগ ব্যবহার করতে হবে, যেখানে আপনি Java ক্লাসের প্যাকেজ এবং ক্লাস নাম নির্দিষ্ট করবেন।
build.xml (কাস্টম টাস্ক ব্যবহার):
<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskExample" default="run-task">
<!-- Task class path definition -->
<taskdef name="hello" classname="com.example.anttasks.HelloTask" classpath="build/classes"/>
<!-- Target to run the custom task -->
<target name="run-task">
<hello message="World"/>
</target>
</project>
এখানে:
<taskdef>
ট্যাগে name="hello"
ব্যবহার করে কাস্টম টাস্কের নাম নির্ধারণ করা হয়েছে। classname="com.example.anttasks.HelloTask"
-এ আপনার কাস্টম টাস্কের Java ক্লাসের পূর্ণ পাথ (full path) উল্লেখ করতে হবে।classpath="build/classes"
— এটি তৈরি হওয়া ক্লাস ফাইলগুলির অবস্থান।কাস্টম টাস্ক চালাতে, আপনি নিচের কমান্ডটি ব্যবহার করতে পারেন:
ant run-task
এটি আপনার HelloTask
টাস্কটি চালাবে এবং আউটপুট হিসেবে "Hello, World" মেসেজটি প্রিন্ট করবে।
আউটপুট:
Hello, World
কাস্টম টাস্কে আপনি আরও অনেক ধরনের ফিচার যুক্ত করতে পারেন। যেমন:
উদাহরণ (File Handling):
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import java.io.File;
public class FileTask extends Task {
private File file;
public void setFile(File file) {
this.file = file;
}
@Override
public void execute() throws BuildException {
if (file == null) {
throw new BuildException("File attribute is required!");
}
if (file.exists()) {
System.out.println("File " + file.getName() + " exists.");
} else {
System.out.println("File " + file.getName() + " does not exist.");
}
}
}
build.xml (FileTask ব্যবহার):
<project name="FileTaskExample" default="check-file">
<taskdef name="checkfile" classname="com.example.anttasks.FileTask" classpath="build/classes"/>
<target name="check-file">
<checkfile file="sample.txt"/>
</target>
</project>
এখানে FileTask
ক্লাসটি একটি ফাইল পাথ নিবে এবং সেটি এক্সিস্ট করে কিনা তা পরীক্ষা করবে।
log()
মেথড ব্যবহার করে লোগ বার্তা পাঠানো যায়।BuildException
ব্যবহার করে এরর হ্যান্ডলিং করা হয়।উদাহরণ (Log Message):
@Override
public void execute() throws BuildException {
log("Executing custom task", Project.MSG_INFO);
}
এখানে, log()
মেথডটি একটি মেসেজ লগ করবে যেটি ANT এর লোগিং মেকানিজমের সাথে সম্পৃক্ত থাকবে।
Task
ক্লাসের সাথে এক্সটেন্ড করতে হবে।execute()
মেথডের মধ্যে আপনার কাস্টম কাজের কোড থাকবে।taskdef
ট্যাগের মাধ্যমে কাস্টম টাস্ক ANT স্ক্রিপ্টে ব্যবহার করতে পারবেন।এটি ANT স্ক্রিপ্টকে আরও শক্তিশালী এবং কাস্টমাইজযোগ্য করে তোলে।
Apache ANT এমন একটি বিল্ড টুল যা অনেক ধরনের প্রস্তুত করা টাস্ক প্রদান করে, যেমন javac
(Java কোড কম্পাইল করা), jar
(JAR ফাইল তৈরি করা), zip
(ফাইল জিপ করা) ইত্যাদি। তবে, কিছু পরিস্থিতিতে সাধারণ টাস্কের মাধ্যমে সমস্ত কাজ করা সম্ভব হয় না বা যেগুলি সরাসরি ANT-এর মধ্যে অন্তর্ভুক্ত নেই। এ ক্ষেত্রে কাস্টম টাস্ক তৈরি করা প্রয়োজন হয়ে পড়ে।
কাস্টম টাস্ক হচ্ছে এমন একটি টাস্ক যা ব্যবহারকারীর নিজস্ব প্রয়োজন অনুসারে তৈরি করা হয় এবং ANT বিল্ড স্ক্রিপ্টে ব্যবহৃত হয়। কাস্টম টাস্ক তৈরি করা গেলে আপনি আপনার নিজস্ব বিল্ড প্রসেসের জন্য একটি টাস্ক বা ফাংশনালিটি সংজ্ঞায়িত করতে পারবেন যা ANT-এর ডিফল্ট টাস্কের বাইরে।
ANT-এ কাস্টম টাস্ক তৈরি করার জন্য Java ক্লাস তৈরি করতে হয়। এই Java ক্লাসটি ANT-এর Task
ক্লাস বা DataType
ক্লাসকে এক্সটেন্ড করে এবং আপনার নিজের ফাংশনালিটি বাস্তবায়ন করে।
Java ক্লাস তৈরি করুন:
একটি Java ক্লাস তৈরি করুন যা org.apache.tools.ant.Task
ক্লাসকে এক্সটেন্ড করে। এই ক্লাসের মধ্যে আপনার কাস্টম লজিক থাকবে।
উদাহরণ: একটি HelloTask
কাস্টম টাস্ক তৈরি করা:
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class HelloTask extends Task {
private String message;
// Getter and Setter for 'message' property
public void setMessage(String message) {
this.message = message;
}
@Override
public void execute() throws BuildException {
if (message == null) {
throw new BuildException("Message not set");
}
System.out.println(message);
}
}
setMessage
: এটি টাস্কে একটি প্রপার্টি (message) সেট করতে ব্যবহৃত হবে।execute()
: এটি সেই লজিক যা টাস্ক রান করার সময় কার্যকর হবে।কাস্টম টাস্কটি ANT ফাইলে রেজিস্টার করুন:
কাস্টম টাস্কটি ব্যবহারের জন্য আপনাকে ANT বিল্ড ফাইলে taskdef
ট্যাগ দিয়ে রেজিস্টার করতে হবে।
উদাহরণ:
<project name="CustomTaskExample" basedir=".">
<!-- Task Definition -->
<taskdef name="hello" classname="com.example.HelloTask"/>
<!-- Use the custom task -->
<target name="say-hello">
<hello message="Hello from Custom Task!"/>
</target>
</project>
taskdef
: এই ট্যাগটি ANT-এ নতুন টাস্কের সংজ্ঞা তৈরি করে এবং তার জন্য ক্লাসের পাথ নির্ধারণ করে।<hello message="Hello from Custom Task!"/>
: এটি আপনার কাস্টম টাস্কটি চালানোর উপায়।lib
বা classes
ডিরেক্টরিতে রাখা হয়।Apache ANT-এ কাস্টম টাস্কের প্রয়োজনীয়তা:
Apache ANT একটি অত্যন্ত কনফিগারেবল টুল যা বিভিন্ন ধরনের বিল্ড টাস্কের জন্য প্রস্তুত টাস্ক প্রদান করে। তবে, যদি আপনি বিশেষ কিছু কার্যক্রম সম্পাদন করতে চান যা ANT-এর ডিফল্ট টাস্ক দ্বারা করা সম্ভব নয়, তবে আপনি Java ব্যবহার করে কাস্টম টাস্ক তৈরি করতে পারেন।
কাস্টম টাস্ক তৈরি করার মাধ্যমে, আপনি ANT-এর ক্ষমতাকে আরও বিস্তৃত করতে পারেন এবং আপনার প্রকল্পের জন্য বিশেষ প্রয়োজনীয় কার্যক্রম যোগ করতে পারেন।
প্রথমে, আপনাকে একটি Java ক্লাস তৈরি করতে হবে যা ANT এর টাস্ককে বাস্তবায়িত করবে। এই ক্লাসটি Task
ক্লাসের উপক্লাস হবে এবং execute
মেথডটি ওভাররাইড করবে।
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class MyCustomTask extends Task {
private String message; // Property to hold the message
// Getter and Setter for the message
public void setMessage(String message) {
this.message = message;
}
// The execute method is called when the task runs
@Override
public void execute() throws BuildException {
if (message == null) {
throw new BuildException("Message property is required!");
}
System.out.println("Custom Message: " + message);
}
}
MyCustomTask
: এই ক্লাসটি Task
ক্লাসকে ইনহেরিট করেছে, যা ANT টাস্কের ভিত্তি।setMessage
: এই মেথডটি message
প্রপার্টি সেট করতে ব্যবহৃত হয়। ANT-এ টাস্কের প্রপার্টি সেট করতে সঠিক setter
মেথড ব্যবহার করা হয়।execute()
: এটি হল প্রধান মেথড যা ANT টাস্ক চালানোর সময় কল হয়। এই মেথডে আপনি আপনার কাস্টম কার্যক্রম বাস্তবায়িত করেন।build.xml
ফাইলে কাস্টম টাস্ক ব্যবহারের জন্য কনফিগারেশনএখন, আপনাকে build.xml
ফাইলে এই কাস্টম টাস্কটি ব্যবহার করতে হবে। প্রথমে, আপনাকে build.xml
ফাইলে কাস্টম টাস্কের জন্য taskdef
ট্যাগ ব্যবহার করে টাস্কটি ডিফাইন করতে হবে।
build.xml
ফাইলের উদাহরণ:<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskProject" default="run-task" basedir=".">
<!-- Task Definition -->
<taskdef name="mycustomtask"
classname="com.example.ant.MyCustomTask"
classpath="path/to/your/classes"/>
<!-- Custom Task Usage -->
<target name="run-task">
<mycustomtask message="Hello, Apache ANT!"/>
</target>
</project>
<taskdef>
: এটি কাস্টম টাস্কটি ডিফাইন করতে ব্যবহৃত হয়।name
: এটি টাস্কের নাম (যেটি আপনি build.xml
ফাইলে কল করবেন)।classname
: এটি আপনার তৈরি করা Java ক্লাসের পূর্ণ পাথ।classpath
: এখানে আপনাকে আপনার কাস্টম টাস্কের ক্লাস ফাইলের পাথ উল্লেখ করতে হবে।<mycustomtask>
: এটি কাস্টম টাস্কটি কল করার জন্য ব্যবহৃত হয়, এবং এটি message
প্রপার্টি গ্রহণ করে যা Java ক্লাসে সেট করা হয়।এখন, আপনি build.xml
ফাইলের মাধ্যমে কাস্টম টাস্কটি রান করতে পারেন।
ant run-task
এই কমান্ডটি চালানোর পরে, আপনি Hello, Apache ANT!
মেসেজটি কনসোলে দেখতে পাবেন, কারণ এটি আপনার কাস্টম টাস্কের আউটপুট।
প্রপার্টি পাস করা
আপনি যদি আরো প্রপার্টি চান, তাহলে Java ক্লাসে আরো গেটার এবং সেটার মেথড তৈরি করতে পারেন।
উদাহরণ:
private String fileName;
public void setFileName(String fileName) {
this.fileName = fileName;
}
@Override
public void execute() throws BuildException {
if (fileName == null) {
throw new BuildException("File name is required!");
}
// File-related operation
}
ফাইল অপারেশন (File Operations)
কাস্টম টাস্কে ফাইল সম্পর্কিত কার্যক্রমও করা যেতে পারে, যেমন ফাইল তৈরি, মুছে ফেলা, কপি করা ইত্যাদি।
উদাহরণ:
File file = new File(fileName);
if (file.exists()) {
file.delete();
System.out.println(fileName + " has been deleted.");
} else {
System.out.println(fileName + " does not exist.");
}
Logging
ANT কাস্টম টাস্কে log
মেথড ব্যবহার করে লগও তৈরি করা যেতে পারে।
উদাহরণ:
log("This is a custom log message", Project.MSG_INFO);
Project.MSG_INFO
: এটি লগের severity লেভেল নির্ধারণ করে (যেমন, INFO, WARN, ERROR)।
আপনি যদি একাধিক কাস্টম টাস্ক তৈরি করতে চান, তবে সেগুলিকে একটি JAR ফাইলে প্যাকেজ করে ANT বিল্ড ফাইলে ব্যবহার করতে পারেন। এর জন্য আপনার JAR ফাইলটি build.xml
এ classpath
হিসেবে উল্লেখ করতে হবে।
<taskdef name="mycustomtask"
classname="com.example.ant.MyCustomTask"
classpath="libs/customtasks.jar"/>
এখানে, customtasks.jar
হল আপনার কাস্টম টাস্কের JAR ফাইল।
Task
ক্লাসের উপর ভিত্তি করে হবে।execute()
মেথড: এই মেথডে আপনার কাস্টম লজিক লিখুন যা ANT টাস্কের কাজ করবে।taskdef
ট্যাগ: build.xml
ফাইলে কাস্টম টাস্ক ব্যবহার করতে taskdef
ট্যাগ ব্যবহার করুন।এভাবে আপনি ANT-এ Java ব্যবহার করে কাস্টম টাস্ক তৈরি করতে পারেন এবং আপনার বিল্ড প্রক্রিয়াকে আরও শক্তিশালী করতে পারেন।
Apache ANT একটি অত্যন্ত কাস্টমাইজেবল বিল্ড টুল, যা বিভিন্ন প্রকারের built-in টাস্ক (যেমন javac
, copy
, jar
) প্রদান করে, তবে কখনো কখনো প্রজেক্টের জন্য বিশেষ ধরনের কাজ সম্পাদন করতে কাস্টম টাস্কের প্রয়োজন হয়। ANT-এ custom task তৈরি করে আপনি আপনার প্রয়োজন অনুযায়ী কাজ করতে পারেন। এই কাস্টম টাস্ক Java ক্লাস হিসেবে তৈরি করা হয় এবং ANT ফাইলের মধ্যে অন্তর্ভুক্ত করা হয়।
এই গাইডে, আমরা দেখব কীভাবে custom task তৈরি এবং কম্পাইল করতে হয় এবং কীভাবে তা ANT ফাইলে অন্তর্ভুক্ত করা যায়।
Custom Task তৈরি করতে, প্রথমে আপনাকে একটি Java ক্লাস তৈরি করতে হবে, যা ANT টাস্কের কার্যক্রম সম্পাদন করবে। একটি ANT টাস্কে org.apache.tools.ant.Task
ক্লাস বা তার উপশ্রেণী (subclass) হতে হবে।
MyCustomTask.java
:
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class MyCustomTask extends Task {
// Override the execute method to define the task behavior
@Override
public void execute() throws BuildException {
System.out.println("Hello, this is a custom ANT task!");
}
}
Task
ক্লাসের subclass হিসেবে MyCustomTask
তৈরি করা হয়েছে।execute()
মেথডটি override করা হয়েছে, যা task চালানোর সময় ANT দ্বারা কল হবে।আপনি যখন Java ক্লাস তৈরি করবেন, তখন এটি কম্পাইল করতে হবে এবং ANT টাস্ক হিসেবে ব্যবহারযোগ্য করতে হবে।
প্রথমে Java ক্লাসটি কম্পাইল করুন:
javac -d . MyCustomTask.java
এখানে -d .
অপশন ব্যবহার করে কম্পাইল করা Java ক্লাসের আউটপুট বর্তমান ডিরেক্টরিতে রাখা হচ্ছে।
এরপর, এই কম্পাইল করা ক্লাসটি একটি JAR ফাইলে প্যাকেজ করুন (যেহেতু এটি ANT টাস্ক, এটি JAR ফাইল হিসেবে প্যাকেজ করা যেতে পারে)।
jar cvf customtask.jar -C . com
এই কমান্ডটি com
প্যাকেজ সহ MyCustomTask.class
ফাইলটি customtask.jar
ফাইলে প্যাকেজ করবে।
ANT ফাইলে Custom Task অন্তর্ভুক্ত করার জন্য আপনাকে taskdef ট্যাগ ব্যবহার করতে হবে। taskdef ট্যাগটি ANT-কে আপনার কাস্টম টাস্কের ক্লাস এবং JAR ফাইল সম্পর্কে তথ্য দেয়।
build.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskExample" default="execute" basedir=".">
<!-- Define custom task -->
<taskdef name="mytask"
classname="com.example.ant.MyCustomTask"
classpath="path/to/customtask.jar"/>
<!-- Target to execute custom task -->
<target name="execute">
<mytask/>
</target>
</project>
taskdef
:com.example.ant.MyCustomTask
হল কাস্টম টাস্কের Java ক্লাসের পূর্ণ কোয়ালিফাইড নাম।<mytask/>
: এটি কাস্টম টাস্কটি চালানোর জন্য ব্যবহৃত হয়। <mytask/>
এই ট্যাগটি taskdef
-এ নির্ধারিত কাস্টম টাস্কের সমতুল্য।কাস্টম টাস্ক অন্তর্ভুক্ত করার পর, ant
কমান্ড ব্যবহার করে বিল্ড চালানো যেতে পারে।
ant execute
এটি execute
টার্গেট চালাবে, যা আপনার কাস্টম টাস্ক চালাবে এবং Hello, this is a custom ANT task!
মেসেজটি কমান্ড লাইনে প্রিন্ট করবে।
কাস্টম টাস্ক আরও উন্নত করতে আপনি বিভিন্ন atributes এবং nested elements যুক্ত করতে পারেন। উদাহরণস্বরূপ, আপনি কাস্টম টাস্কে ইনপুট প্যারামিটার পাস করতে পারেন।
MyCustomTask.java
(Parameterized):
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class MyCustomTask extends Task {
private String message;
// Setter for the message parameter
public void setMessage(String message) {
this.message = message;
}
@Override
public void execute() throws BuildException {
if (message == null) {
throw new BuildException("Message attribute is required!");
}
System.out.println(message);
}
}
এখানে setMessage()
মেথডটি যোগ করা হয়েছে যা ANT ফাইলে পাস করা ইনপুট মেসেজ গ্রহণ করবে।
build.xml
(Parameterized):<?xml version="1.0" encoding="UTF-8"?>
<project name="CustomTaskExample" default="execute" basedir=".">
<!-- Define custom task with parameter -->
<taskdef name="mytask"
classname="com.example.ant.MyCustomTask"
classpath="path/to/customtask.jar"/>
<target name="execute">
<!-- Pass a message to custom task -->
<mytask message="Hello, Custom Task with Parameter!"/>
</target>
</project>
এখন আপনি message
অ্যাট্রিবিউট পাস করতে পারেন এবং কাস্টম টাস্ক সেই মানটি ব্যবহার করবে।
org.apache.tools.ant.Task
ক্লাসের subclass হবে এবং execute()
মেথডটি override করবে।taskdef
ট্যাগ ব্যবহার করুন এবং প্রয়োজনীয় ক্লাসপাথ সেট করুন।এইভাবে, আপনি ANT-এর বিল্ড প্রক্রিয়ায় কাস্টম টাস্ক তৈরি এবং অন্তর্ভুক্ত করে অতিরিক্ত কার্যকলাপ সম্পাদন করতে পারবেন, যা প্রজেক্টের নির্দিষ্ট প্রয়োজন অনুসারে কাস্টমাইজ করা যাবে।
Apache ANT একটি অত্যন্ত নমনীয় এবং কাস্টমাইজযোগ্য বিল্ড টুল, যা আপনাকে আপনার নিজস্ব টাস্ক তৈরি করার সুযোগ প্রদান করে। কাস্টম টাস্কগুলি বিশেষভাবে তৈরি করা হয় যাতে নির্দিষ্ট কাজ সম্পন্ন করতে পারে যা পূর্বনির্ধারিত ANT টাস্কের বাইরে। কাস্টম টাস্ক ব্যবহার করা হলে, আপনি টাস্কের মধ্যে নির্দিষ্ট প্রক্রিয়া, নির্দিষ্ট ফাইল অপারেশন বা নির্দিষ্ট কার্যক্রম যোগ করতে পারবেন, যা আপনার প্রোজেক্টের প্রয়োজন অনুসারে উপযোগী।
ANT কাস্টম টাস্ক তৈরি করার জন্য মূলত Java ব্যবহার করতে হয়, কারণ ANT টাস্ক Java ক্লাস হিসেবে তৈরি হয় এবং বিল্ড ফাইলে তা ব্যবহার করা হয়। এখানে কাস্টম টাস্ক তৈরি ও ব্যবহার করার মূল পদক্ষেপগুলো আলোচনা করা হয়েছে।
Apache ANT এ কাস্টম টাস্ক তৈরি করতে হলে একটি Java ক্লাস তৈরি করতে হবে যা org.apache.tools.ant.Task
ক্লাসকে এক্সটেন্ড (extend) করবে। এটি সেই ক্লাসের মেথডগুলি ব্যবহার করে টাস্কটি চালাবে।
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class HelloWorldTask extends Task {
// এই মেথডটি টাস্ক চলাকালীন ANT দ্বারা কল হবে
public void execute() throws BuildException {
System.out.println("Hello, World from Custom ANT Task!");
}
}
এখানে:
HelloWorldTask
ক্লাসটি Task
ক্লাস এক্সটেন্ড করেছে, যা ANT টাস্কের জন্য একটি বেস ক্লাস।execute()
মেথডটি একটি অবধারিত মেথড, যা ANT টাস্ক রান হওয়ার সময় কল করা হয়।BuildException
প্রয়োগ করার মাধ্যমে, ত্রুটি সনাক্ত করা যাবে।কাস্টম টাস্ক ব্যবহার করতে হলে, আপনাকে প্রথমে ক্লাসটি ANT classpath এ অন্তর্ভুক্ত করতে হবে এবং তারপরে build.xml ফাইলে ব্যবহার করতে হবে। এটি সম্ভব করতে আপনার Java ক্লাস ফাইলটি ANT-এ প্রবাহিত করতে হবে।
<path id="custom.classpath">
<fileset dir="lib">
<include name="custom-task.jar"/>
</fileset>
</path>
এখানে:
lib/custom-task.jar
ফাইলটি ANT ক্লাসপাথে যুক্ত করা হয়েছে।<project name="CustomTaskExample" default="run-custom-task" basedir=".">
<taskdef name="hello" classname="com.example.ant.HelloWorldTask">
<classpath refid="custom.classpath"/>
</taskdef>
<target name="run-custom-task">
<hello/>
</target>
</project>
এখানে:
taskdef
ট্যাগটি কাস্টম টাস্ক HelloWorldTask
শ্রেণীকে name="hello"
হিসাবে ডিফাইন করেছে।classname
হল সেই Java ক্লাসের পুরো প্যাকেজ এবং ক্লাস নাম যা কাস্টম টাস্কের কার্যকরী অংশ।<hello/>
হল সেই টাস্ক যা আপনি run-custom-task
টার্গেটের মধ্যে ব্যবহার করেছেন এবং এটি যখন রান হবে, তখন কাস্টম টাস্কটি কার্যকর হবে।কাস্টম টাস্কে অ্যাট্রিবিউট বা প্রপার্টি যোগ করা সম্ভব, যা আপনাকে টাস্কটির ইনপুট কনফিগারেশন করতে সাহায্য করবে। টাস্কের ভিতরে ইনপুট প্যারামিটার বা প্রপার্টি ব্যবহার করতে আপনি setter methods তৈরি করতে পারেন।
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
public class HelloWorldTask extends Task {
private String message;
// setter method for message attribute
public void setMessage(String message) {
this.message = message;
}
public void execute() throws BuildException {
if (message == null) {
throw new BuildException("The message attribute is required!");
}
System.out.println(message);
}
}
এখানে:
setMessage
মেথডের মাধ্যমে message
অ্যাট্রিবিউটটিকে অ্যাক্সেস করা হচ্ছে।execute
মেথডে message
প্রপার্টি চেক করা হচ্ছে, এবং তা না থাকলে একটি ত্রুটি (exception) ছোড়া হচ্ছে।<project name="CustomTaskWithAttributes" default="run-custom-task" basedir=".">
<taskdef name="hello" classname="com.example.ant.HelloWorldTask">
<classpath refid="custom.classpath"/>
</taskdef>
<target name="run-custom-task">
<hello message="Hello, World with Custom Attribute!"/>
</target>
</project>
এখানে:
hello
টাস্কে message
অ্যাট্রিবিউট পাস করা হয়েছে।কাস্টম টাস্কে আরও জটিল লজিকও যোগ করা যেতে পারে। যেমন, ফাইল তৈরি করা, ডেটাবেস কল করা, বা অন্য কোনো বাহ্যিক সিস্টেমের সঙ্গে যোগাযোগ করা।
package com.example.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import java.io.File;
public class FileCheckTask extends Task {
private String fileName;
public void setFile(String fileName) {
this.fileName = fileName;
}
public void execute() throws BuildException {
File file = new File(fileName);
if (!file.exists()) {
throw new BuildException("File not found: " + fileName);
}
System.out.println("File exists: " + fileName);
}
}
এখানে:
setFile
মেথডের মাধ্যমে ফাইলের নাম পাস করা হচ্ছে।execute
মেথডে চেক করা হচ্ছে, ফাইলটি উপস্থিত আছে কিনা। যদি না থাকে, তবে ত্রুটি ছোড়া হচ্ছে।<project name="CustomTaskWithFileCheck" default="check-file" basedir=".">
<taskdef name="filecheck" classname="com.example.ant.FileCheckTask">
<classpath refid="custom.classpath"/>
</taskdef>
<target name="check-file">
<filecheck file="somefile.txt"/>
</target>
</project>
এখানে:
filecheck
টাস্কে file
অ্যাট্রিবিউট পাস করা হচ্ছে।Apache ANT-এ কাস্টম টাস্ক তৈরি ও ব্যবহারের মাধ্যমে আপনি আরও কাস্টমাইজড এবং জটিল বিল্ড প্রক্রিয়া তৈরি করতে পারেন। একটি কাস্টম টাস্ক Java ক্লাস হিসেবে তৈরি হয়, যা org.apache.tools.ant.Task
থেকে এক্সটেন্ড করতে হয় এবং আপনি setter methods এবং অন্যান্য প্রপার্টি ব্যবহার করে টাস্কের মধ্যে ইনপুট ও কার্যকলাপ সংজ্ঞায়িত করতে পারেন। এটি আপনার প্রোজেক্টের জন্য বিশেষ কাজ সম্পন্ন করতে সাহায্য করে, যেমন ফাইল পরিচালনা, ডেটাবেস ইন্টিগ্রেশন বা অন্যান্য বহিরাগত কার্যক্রম।
common.read_more